/* 单例模式: 饿汉  懒汉  */
#include <iostream>

// // 饿汉模式
// class Singleton
// {
// public:
//     static Singleton& getInstance()
//     {
//         return _eton;
//     }

//     int getData()
//     {
//         return _data;
//     }
// private:
//     static Singleton _eton;
//     Singleton()
//         :_data(99)
//     {
//         std::cout << "单例对象构造\n";
//     }

//     ~Singleton()    {}

//     Singleton(const Singleton&) = delete;
// private:
//     int _data;
// };
// Singleton Singleton::_eton;


// 懒汉模式
class Singleton
{
public:
    static Singleton&  getInstance()
    {
        static Singleton  _eton;
        return _eton;
    }

    int getData()
    {
        return _data;
    }
private:
    Singleton()
        :_data(99)
    {
        std::cout << "单例对象的构建\n";
    }

    ~Singleton()    {}

    Singleton(const Singleton&) = delete;
private:
    int _data;
};

int main()
{
    std::cout << Singleton::getInstance().getData();
    return 0;
}
